<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8" />
		<base href="../../../" />
		<script src="page.js"></script>
		<link type="text/css" rel="stylesheet" href="page.css" />
	</head>
	<body>
		<h1>[name]</h1>

		<p class="desc">
			An [name] is a reusable set of keyframe tracks which represent an animation.<br /><br />

			For an overview of the different elements of the three.js animation system see the
			"Animation System" article in the "Next Steps" section of the manual.
		</p>


		<h2>Constructor</h2>


		<h3>[name]( [param:String name], [param:Number duration], [param:Array tracks] )</h3>
		<p>
			[page:String name] - a name for this clip.<br />
			[page:Number duration] - the duration of this clip (in seconds). If a negative value is passed,
			the duration will be calculated from the passed `tracks` array.<br />
			[page:Array tracks] - an array of [page:KeyframeTrack KeyframeTracks].<br />
			[page:Number blendMode] - defines how the animation is blended/combined when two or more animations are simultaneously played.<br /><br />


			Note: Instead of instantiating an AnimationClip directly with the constructor, you can use one
			of its static methods to create AnimationClips: from JSON ([page:.parse parse]), from morph
			target sequences ([page:.CreateFromMorphTargetSequence CreateFromMorphTargetSequence],
			[page:.CreateClipsFromMorphTargetSequences CreateClipsFromMorphTargetSequences]) or from
			animation hierarchies ([page:.parseAnimation parseAnimation]) - if your model doesn't already
			hold AnimationClips in its geometry's animations array.
		</p>

		<h2>Properties</h2>

		<h3>[property:Number blendMode]</h3>
		<p>
			Defines how the animation is blended/combined when two or more animations are simultaneously played. 
			Valid values are *NormalAnimationBlendMode* (default) and *AdditiveAnimationBlendMode*.
		</p>

		<h3>[property:Number duration]</h3>
		<p>
			The duration of this clip (in seconds). This can be calculated from the [page:.tracks tracks]
			array via [page:.resetDuration resetDuration].
		</p>

		<h3>[property:String name]</h3>
		<p>
			A name for this clip. A certain clip can be searched via [page:.findByName findByName].
		</p>

		<h3>[property:Array tracks]</h3>
		<p>
			An array containing a [page:KeyframeTrack] for each property that are animated by this clip.
		</p>

		<h3>[property:String uuid]</h3>
		<p>
			The [link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this clip instance.
			It gets automatically assigned and shouldn't be edited.
		</p>


		<h2>Methods</h2>


		<h3>[method:AnimationClip clone]()</h3>
		<p>
			Returns a copy of this clip.
		</p>

		<h3>[method:this optimize]()</h3>
		<p>
			Optimizes each track by removing equivalent sequential keys (which are common in morph target
			sequences).
		</p>

		<h3>[method:this resetDuration]()</h3>
		<p>
			Sets the [page:.duration duration] of the clip to the duration of its longest
			[page:KeyframeTrack].
		</p>

		<h3>[method:Object toJSON]()</h3>
		<p>
			Returns a JSON object representing the serialized animation clip.
		</p>

		<h3>[method:this trim]()</h3>
		<p>
			Trims all tracks to the clip's duration.
		</p>

		<h3>[method:Boolean validate]()</h3>
		<p>
			Performs minimal validation on each track in the clip. Returns true if all tracks are valid.
		</p>


		<h2>Static Methods</h2>


		<h3>[method:Array CreateClipsFromMorphTargetSequences]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
		<p>
			Returns an array of new AnimationClips created from the morph
			target sequences of a geometry, trying to sort morph target names into animation-group-based
			patterns like "Walk_001, Walk_002, Run_001, Run_002 ...".
		</p>

		<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
		<p>
			Returns a new AnimationClip from the passed morph targets array of a geometry, taking a name and the number of frames per second.<br /><br />

			Note: The fps parameter is required, but the animation speed can be overridden in an
			`AnimationAction` via [page:AnimationAction.setDuration animationAction.setDuration].
		</p>

		<h3>[method:AnimationClip findByName]( [param:Object objectOrClipArray], [param:String name] )</h3>
		<p>
			Searches for an AnimationClip by name, taking as its first parameter either an array of
			AnimationClips, or a mesh or geometry that contains an array named "animations".
		</p>

		<h3>[method:AnimationClip parse]( [param:Object json] )</h3>
		<p>
			Parses a JSON representation of a clip and returns an AnimationClip.
		</p>

		<h3>[method:AnimationClip parseAnimation]( [param:Object animation], [param:Array bones] )</h3>
		<p>
			Parses the animation.hierarchy format and returns an AnimationClip.
		</p>

		<h3>[method:Object toJSON]( [param:AnimationClip clip] )</h3>
		<p>
			Takes an AnimationClip and returns a JSON object.
		</p>


		<h2>Source</h2>


		<p>
			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
		</p>
	</body>
</html>
